package com.magic.cd.core;

import java.util.Date;

import com.magic.cd.entry.ReceiveMessageVO;
import com.magic.cd.enums.MessageType;
import com.magic.cd.util.WeixinUtils;

/**
 * 微信消息处理器
 * */
public class WeixinHandler {

	/**
	 * 消息处理
	 * @param	msg    微信发来的消息
	 * @return	String 我们发给微信的消息
	 * */
	public String run(ReceiveMessageVO msg){
		String result = "";
		
		//1.获取消息类型
		String type = msg.getMsgType();
		if(MessageType.text.aviable(type)){
			//处理文本消息
			//某些文本有特殊含义
			String content = msg.getContent();
			if("文本".equals(content)){
				result = WeixinUtils.toTextMsg(msg);
			}else if("图文".equals(content)){
				result = WeixinUtils.toImageTextMsg(msg);
			}else if("多个图文".equals(content)){
				result = WeixinUtils.toDoubleImageTextMsg(msg);
			}else if("音乐".equals(content)){
				result = WeixinUtils.toMusicMsg(msg);
			}else if("图片".equals(content)){
				result = WeixinUtils.toImageMsg(msg);
			}else if("help".equals(content)){
				result = WeixinUtils.toTestMsg(msg);
			}else{
				result = WeixinUtils.toTextMsg(msg);
			}
		}else if(MessageType.event.aviable(type)){
			//处理事件消息
			if("subscribe".equals(msg.getEvent())){//关注我们时的事件
				System.out.println("用户取消关注公众号,发送欢迎界面并处理用户关注的后台业务逻辑!");
				System.out.println("用户Id:"+msg.getFromUserName());
				result = WeixinUtils.toLoginMsg(msg);
			}else if("unsubscribe".equals(msg.getEvent())){//取消关注的事件
				//处理用户关系，记录指定用户状态
				System.out.println("用户取消关注公众号!");
				System.out.println("用户Id:"+msg.getFromUserName());
				System.out.println("取消时间："+new Date());
			}else if("CLICK".equals(msg.getEvent())){
				String key = msg.getEventKey();
				if("help".equals(key)){
					result = WeixinUtils.toTestMsg(msg);
				}else if("image_text".equals(key)){
					result = WeixinUtils.toImageTextMsg(msg);
				}else if("music".equals(key)){
					result = WeixinUtils.toMusicMsg(msg);
				}
			}
		}
		System.out.println("send_msg:"+result);
		return result;
	}
	
}
